#include <func.h>
/*
    进程A的聊天显示界面
*/
struct sharedMem
{
    int written; // 0表示可读，1表示可写
    char text[128];
};

int main(int argc, char* argv[])
{
    int fdr1 = open("3.pipe", O_RDONLY);
    ERROR_CHECK(fdr1, -1, "open");

    char buf[128] = {0}; // 管道信息

    // 共享内存申请
    int shmid;
    shmid = shmget(1000,4096,IPC_CREAT|0600);//第一次创建，第二次相同的key值是获取
    ERROR_CHECK(shmid,-1,"shmget");
    struct sharedMem *share = (struct sharedMem*)shmat(shmid,NULL,0);//共享内存连接到本进程内
    // ERROR_CHECK(p,(struct sharedMem *)-1,"shmat");

    while (1)
    {
        // 等待共享内存可读
        while (share->written == 1) {}
        // 对方断开
        if (!strcmp(share->text, "end"))
        {
            printf("chat break\n");
            break;
        } 
        // 打印收到的消息
        printf("%s\n", share->text);
        // 设置共享内存可写
        share->written = 1;
    }

    // 关闭管道
    close(fdr1);

    return 0;
}